MetaMask を使用した Web3 の初期化
MetaMask は Chrome プラグインとして使える大変便利な Ethereum ウォレットです。
MetaMask を使用するとボタン 1 つでトランザクションに署名ができるので、エンドユーザーが DApps を使用する際に重宝します。
MetaMask を使用した Web3 の初期化
MetaMask をアンロックした状態で、Web3 ライブラリを使用しているウェブサイトを開くと、web3 というグローバル変数に自動的に Web3 オブジェクトがインジェクトされます。
通常、web3 にセットされたオブジェクトをそのまま使用するのではなく、次のような方法で初期化します。
なお、MetaMask の github によると、ブラウザの load イベントで MetaMask のインジェクトが行われるようです。
code:example.js
var web3js; // ローカルの Web3 オブジェクトを格納するための変数
window.addEventListener('load', function() {
// Web3 が Ethereum 対応ブラウザ (Mist や MetaMask) によってインジェクトされているかどうかをチェックします。
if (typeof web3 !== 'undefined') {
// Mist または MetaMask のプロバイダを使用して Web3 を初期化します。
web3js = new Web3(web3.currentProvider);
} else {
// Mist や MetaMask 等の Ethereum 対応ブラウザを使用していない場合の初期化です。
// 必要に応じて、ローカルノードやホスティングしているノード等を使用します。
// 以下の例では infura.io をプロバイダとして使用し、Web3 を初期化しています。
web3js = new Web3('wss://mainnet.infura.io/ws');
}
});
References